using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace TestImport
{
    public partial class GroepenBeheren : TestImport.SuperDataView
    {
        private bool isnew;
        private String oudeGroepCode;
        private Boolean isRaming;

        public GroepenBeheren()
        {
            InitializeComponent();
            isRaming = false;
        }

        public GroepenBeheren(String raming)
        {
            InitializeComponent();
            this.BackColor = InstParameters.Default.schermkleur;
            isRaming = true;
        }

        private void groepBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.groepBindingSource.EndEdit();
            this.groepTableAdapter.Update(this.onsBoekenPakketDataSet.Groep);
        }

        private void GroepenBeheren_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Groep' table. You can move, or remove it, as needed.
            this.groepTableAdapter.Fill(this.onsBoekenPakketDataSet.Groep);
            //this.Text = "Beheren groepen";
            if (isRaming)
                instellenRamingen();
            this.WindowState = FormWindowState.Maximized;
        }

        private void switchButtonModus()
        {
            Nieuw.Enabled = !Nieuw.Enabled;
            Wijzig.Enabled = !Wijzig.Enabled;
            Wis.Enabled = !Wis.Enabled;
            Registreer.Enabled = !Registreer.Enabled;
            RegistreerEnNieuw.Enabled = !RegistreerEnNieuw.Enabled;
            Annuleer.Enabled = !Annuleer.Enabled;
            this.groepDataGridView.Enabled = !this.groepDataGridView.Enabled;
        }

        private void switchEnabledModus()
        {
            txtGroepCode.ReadOnly = !txtGroepCode.ReadOnly;
            txtJaar.ReadOnly = !txtJaar.ReadOnly;
            txtOmschrijving.ReadOnly = !txtOmschrijving.ReadOnly;
            txtOpmerking.ReadOnly = !txtOpmerking.ReadOnly;
            
        }

        private void instellenRamingen()
        {
            this.Text = "Invullen ramingen (en opmerkingen)";
            //gridview: tonen kolommen
            this.dataGridViewRaming.Visible = true;
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
            dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
            dataGridViewCellStyle1.ForeColor = System.Drawing.Color.Maroon;
            this.dataGridViewOpmerking.DefaultCellStyle = dataGridViewCellStyle1;
            this.dataGridViewOpmerking.ReadOnly = false;
            //instellen knoppen
            Nieuw.Enabled = false;
            Wijzig.Enabled = false;
            Wis.Enabled = false;
            Registreer.Enabled = false;
            RegistreerEnNieuw.Enabled = false;
            Annuleer.Enabled = false;
        }

        private void Nieuw_Click(object sender, EventArgs e)
        {
            this.switchEnabledModus();
            this.switchButtonModus();
            this.groepBindingSource.AddNew();
            isnew = true;
        }

        private void Wijzig_Click(object sender, EventArgs e)
        {
            this.switchEnabledModus();
            this.switchButtonModus();
            isnew = false;
            oudeGroepCode = this.txtGroepCode.Text;
        }

        private void Wis_Click(object sender, EventArgs e)
        {

        }

        private void Registreer_Click(object sender, EventArgs e)
        {
            DialogResult result = DialogResult.No;
            if (isnew)
                result = MessageBox.Show("Nieuwe groep registreren?", "Registreren nieuwe groep?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            else
                result = MessageBox.Show("Groep gegevens wijzigen?", "Registreren gewijzigde groep?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (result == DialogResult.Yes)
            {
                if (IsValide())
                {
                    if (!isnew)
                    {
                        if (!oudeGroepCode.Equals(txtGroepCode.Text)) UpdateGroepCode();
                    }
                    try
                    {
                        this.groepBindingSource.EndEdit();
                        this.groepTableAdapter.Update(this.onsBoekenPakketDataSet.Groep);
                        this.switchEnabledModus();
                        this.switchButtonModus();
                        this.groepDataGridView.Refresh();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString());
                    }
                }
            }
            else
            {
                this.groepBindingSource.CancelEdit();
                this.switchEnabledModus();
                this.switchButtonModus();
            }
        }
        

        private void Annuleer_Click(object sender, EventArgs e)
        {
            if (isnew)
            {
                this.groepBindingSource.RemoveCurrent();
            }
            else
            {
                this.groepBindingSource.CancelEdit();
            }

            this.switchEnabledModus();
            this.switchButtonModus();
        }


        private bool IsValide()
        {   
            
            return true;
        }

        private void RegistreerEnNieuw_Click(object sender, EventArgs e)
        {
            this.Registreer_Click(sender, e);
            this.Nieuw_Click(sender, e);
        }

        private void UpdateGroepCode(){
            oudeGroepCode.Equals(txtGroepCode.Text);
            String conString = Properties.Settings.Default.TestImportConnectionString;
            //this.Text = conString;
            SqlConnection con = new SqlConnection(conString);
            con.Open();
            SqlCommand com = con.CreateCommand();
            String oudeCode = oudeGroepCode;
            com.CommandText = "SELECT COUNT (*) FROM Leerling WHERE groepCode = " + "'" + oudeCode + "'";
            Object res = com.ExecuteScalar();
            this.Text = "Aantal leerlingen " + res;
            int aantal = Int32.Parse(res.ToString());
            if (aantal > 0)
            {
                String nieuweCode = txtGroepCode.Text;
                com.CommandText = "UPDATE Leerling SET groepCode = " + "'" + nieuweCode + "'" +
                                  " WHERE groepCode = " + "'" + oudeCode + "'";
                int aantalUpdates = com.ExecuteNonQuery();
                this.Text = "Aantal updates " + aantalUpdates;
            }
            con.Close();
        }

        private void groepDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            MessageBox.Show("Alleen cijfers zijn toegelaten!!!");
           
            if (e.Context == DataGridViewDataErrorContexts.Parsing)
            {
            MessageBox.Show("Alleen cijfers zijn toegelaten!!");
            }

            if (e.Context == DataGridViewDataErrorContexts.CurrentCellChange)
            {
                MessageBox.Show("Cell change");
            }

            if (e.Context == DataGridViewDataErrorContexts.Commit)
            {
                MessageBox.Show("Commit error");
            }


        }

        protected virtual void GroepenBeheren_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (isRaming)
            {
                DialogResult result = MessageBox.Show("De ingevulde ramingen (en opmerkingen) registreren?", "Registreer ramingen?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    this.Validate();
                    this.groepBindingSource.EndEdit();
                    this.groepTableAdapter.Update(this.onsBoekenPakketDataSet.Groep);
                }
            }
        }

        private void groepBindingNavigator_RefreshItems(object sender, EventArgs e)
        {

        }

        
    }
}

 